home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / aal / list.h < prev    next >
C/C++ Source or Header  |  2006-01-09  |  2KB  |  56 lines

  1. /* Copyright (C) 2001, 2002, 2003 by Hans Reiser, licensing governed by
  2.    libaal/COPYING.
  3.    
  4.    list.h -- double-linked list implementation. */
  5.  
  6. #ifndef AAL_LIST_H
  7. #define AAL_LIST_H
  8.  
  9. #ifndef ENABLE_MINIMAL
  10. #include <aal/types.h>
  11.  
  12. extern aal_list_t *aal_list_alloc(void *data);
  13. extern aal_list_t *aal_list_last(aal_list_t *list);
  14. extern aal_list_t *aal_list_first(aal_list_t *list);
  15.  
  16. extern uint32_t aal_list_len(aal_list_t *list);
  17.  
  18. extern errno_t aal_list_foreach(aal_list_t *list, 
  19.                 foreach_func_t func,
  20.                 void *data);
  21.  
  22. extern aal_list_t *aal_list_prepend(aal_list_t *list,
  23.                     void *data);
  24.  
  25. extern int32_t aal_list_pos(aal_list_t *list, void *data);
  26. extern aal_list_t *aal_list_at(aal_list_t *list, uint32_t n);
  27.  
  28. extern aal_list_t *aal_list_insert(aal_list_t *list, 
  29.                    void *data, uint32_t n);
  30.  
  31. extern aal_list_t *aal_list_insert_sorted(aal_list_t *list,
  32.                       void *data,
  33.                       comp_func_t comp_func,
  34.                       void *user);
  35.     
  36. extern aal_list_t *aal_list_append(aal_list_t *list, void *data);
  37. extern aal_list_t *aal_list_remove(aal_list_t *list, void *data);
  38. extern aal_list_t *aal_list_find(aal_list_t *list, void *data);
  39.  
  40. extern aal_list_t *aal_list_find_custom(aal_list_t *list, void *needle, 
  41.                     comp_func_t comp_func, void *data);
  42.  
  43. extern void aal_list_free(aal_list_t *list, foreach_func_t func, void *data);
  44.  
  45. /* Macros for walking through the list in both directions (forward and
  46.    backward). They are used for simple search, etc. */
  47. #define aal_list_foreach_forward(list, walk)  \
  48.         for (walk = list; walk; walk = walk->next)
  49.  
  50. #define aal_list_foreach_backward(list, walk) \
  51.         for (walk = list; walk; walk = walk->prev)
  52.     
  53. #endif
  54.  
  55. #endif
  56.